<?php namespace App\Repositories\User;

interface PublisherRepositoryInterface
{

    /**
     * @param $id
     *
     * @return \App\Models\Publisher
     */
    public function show($id);

    /**
     * 是否有效发布者
     *
     * @param $id
     *
     * @return bool
     */
    public function isValidPublisher($id);

    /**
     * 创建发布者
     *
     * @param $id
     */
    public function createPublisher($id);

    /**
     * 通过邀请码获取记录
     *
     * @param $code
     *
     * @return \App\Models\PublisherInviteCode||null
     */
    public function findCoderByCode($code);

    /**
     * 受邀发布者绑定邀请码
     *
     * @param $coder
     * @param $invitee_uid
     *
     * @return bool
     */
    public function inviteeBindCoder($coder, $invitee_uid);

    /**
     * 统计发布者的邀请者数量
     *
     * @param $publisher_uid
     *
     * @return int
     */
    public function publisherInviteeCount($publisher_uid);

    /**
     * 统计发布者的邀请码数量
     *
     * @param $publisher_uid
     *
     * @return int
     */
    public function publisherInviteCodeCount($publisher_uid);

    /**
     * 创建邀请码
     *
     * @param $publisher_uid
     *
     * @return \App\Models\PublisherInviteCode
     */
    public function createInviteCoder($publisher_uid);

    /**
     * 获取卖家邀请人
     *
     * @param $invitee_uid
     *
     * @return mixed|null
     */
    public function getPublisherInviteUid($invitee_uid);
}
